package com.northpool.operator.utils;

import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;

import java.util.Map;

public class ParamUtils {
    public final static String PARAM_PREFIX = "JIANMU_";
    public final static String PARAM_URL_PREFIX = "#PARAM_URL#";

    /**
     * 根据参数唯一标识，获取参数值
     * @param paramRef 参数唯一标识
     * @return 参数值
     */
    public static String parse(String paramRef) {
        if (StrUtil.isEmpty(paramRef)) {
            throw new RuntimeException("参数解析失败：参数唯一标识不能为空");
        }
        Map<String, String> envMap = System.getenv();
        String value = envMap.get(PARAM_PREFIX + paramRef.toUpperCase());
        return parseValue(value);
    }

    /**
     * 解析参数值，如果参数值中包含参数地址的话
     * @param value 参数值
     * @return 参数值
     */
    public static String parseValue(String value) {
        if (StrUtil.isNotBlank(value) && value.startsWith(PARAM_URL_PREFIX)) {
            String paramUrl = StrUtil.subAfter(value, PARAM_URL_PREFIX, false);
            // 如果后面没有地址，就直接返回
            if (!Validator.isUrl(paramUrl)) {
                return value;
            }
            HttpResponse execute = HttpUtil.createGet(paramUrl).execute();
            String result;
            if (execute.isOk()) {
                result = execute.body();
            } else {
                throw new RuntimeException("参数内容下载异常: " + paramUrl);
            }
            return result;
        } else {
            return value;
        }
    }
}
